FREOPEN

            
#include <stdio.h>
FILE *freopen (pathname, type, stream);
            
char *pathname; path-имя нового файла.
char *type; разрешенный тип доступа.
                                                               
FILE *stream; указатель на структуру FILE.

Описание:
Функция freopen закрывает текущий файл, связанный с потоком stream , и переназначает этот поток в файл, определяемый path -именем. Эта функция обычно применяется для переадресации предоткрытых потоков stdin, stdout, stderr, stdaux, stdprn в файлы, определяемые пользователем. Новый файл, связанный с потоком, открывается в режиме type , который определен следующим образом:

      
            ТИП                   ОПИСАНИЕ
                                                            
            "r"          открыть файл для чтения.(Этот файл должен
                         существовать).
         
            "w"          открыть пустой файл для записи; если этот
                         файл  ранее  существовал,  его содержимое
                         уничтожается.
                         
            "a"          открыть файл для  записи  (добавления)  в
                         конец. Если данного файла нет, то вначале
                         он создается.
                         
            "r+"         открыть файл одновременно  для  чтения  и
                         записи. Файл должен существовать.
                         
            "w+"         открыть  пустой файл для чтения и записи.
                         Если этот  файл  ранее  существовал,  его
                         сожержимое уничтожается.
                         
            "a+"         открыть  файл  для  чтения и  добавления.
                         Если файла нет, вначале он создается.
            

Замечание!
Нужно внимательно применять режимы "w", "w+", так как они могут уничтожить существующие файлы.
Если файл открыт при помощи типа "a" или "a+", все операции записи выполняются в конец файла. При использовании функций fseekrewind возможно перепозиционирование указателя на файл; несмотря на это, указатель на файл перед выполнением любых операций записи всегда возвращается в конец файла. Таким образом, существующие данные не будут перезаписаны. При использовании типов "r+', "w+", "a+" допускается одновременно чтение и запись. (Говорится, что файл открывается для обновления). Поэтому при переключении чтения на запись и наоборот нужно использовать функции fseek или rewind . Для функции fseek (при необходимости) может быть точно определена текущая позиция.
Дополнительно к значениям, описанным выше, может быть добавлен в строке type один из следующих символов, чтобы специфицировать способ преобразования символа новой строки.

            
            Символ               Значение
            
              t          открыть   в   текстовом   (преобразующем)
                         режиме;  при  вводе  комбинация  "Возврат
                         каретки      -      перевод       строки"
                         преобразовывается к единственному символу
                         "перевода  строки".  При  выводе   символ
                         перевода   строки   преобразовывается   в
                         комбинацию ВК-ПС.
                         
              b          открыть   в   двоичном  (непреобразующем)
                         режиме; выше описанные преобразования  не
                         осуществляются.
                         

Если t или b в строке type не задается, режим преобразования определяется переменной _fmode и режимом, устанавливаемым по умолчанию.

Возвращаемое значение:
Функция freopen возвращает указатель на вновь открытый файл. Если возникла ошибка, прежний файл закрывается и функция возвращает значение указателя NULL.

Пример.

            
               #include <stdio.h>
            
               FILE *stream;
               .
               .
               .
               /* следующий оператор закрывает поток stdout и переназнача-
         ет этот поток указателю потока. */
            
               stream = freopen ("data2", "w+", stdout);.
                                                                
Hosted by uCoz